#pragma once
#include <iostream>
#include "Sock.hpp"
#include "HttpServer.hpp"
#include <memory>
#include <string>
#include <sstream>
#include <fstream>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
using namespace std;

string Split(string &request, const string &sep) // 分割请求
{
    // 进行切割，并且把切割出来的东西删除
    size_t pos = request.find(sep,0);
    if(pos==string::npos)
    {
        return "error";
    }
    string ret = request.substr(0, pos); // 切割出需要的
    request.erase(0, pos + sep.size());  // 记得删除
    LogMessage(Debug, "Split management");  
    return ret;
}

void Analyze(string &requestline, string &method, string &url, string &version) // 对客户端发来的请求进行解析 //这解析的是请求行
{
    stringstream ss; // 通过字符串流来解析
    ss << requestline;
    ss >> method;
    string tmp;
    ss >> tmp;
    url+=tmp;
    ss >> version;
    ss.clear();
    LogMessage(Debug, "Analyze management");
    return;
}

// 用来读取wwwroot下的网页
bool ReadFile(const string &filename, string &body)
{
    // 2048*2
    char buff[4096];
    int fd=open(filename.c_str(),O_RDONLY);
      if(fd==-1)
    {
        LogMessage(Error,"open file error,消息:%s",strerror(errno));
        //exit(OPEN_ERR);
        return false;
    }
    int n = read(fd,buff,sizeof(buff)-1);
    if(n<0)
    {
        LogMessage(Error,"read file error,消息:%s",strerror(errno));
        //exit(READ_ERR);
        return false;
    }
    close(fd);
    buff[n] =0;
    body+= buff;
    LogMessage(Debug,"Read file management");
    return true;
}
